package com.owen.count.down.latch.simple1;

import java.util.concurrent.CountDownLatch;

/**
 * CountDownLatch典型用法1：
 *     某一线程在开始运行前等待n个线程执行完毕。
 *     将CountDownLatch的计数器初始化为n new CountDownLatch(n) ，每当一个任务线程执行完毕，就将计数器减1 countdownlatch.countDown()，当计数器的值变为0时，在CountDownLatch上 await() 的线程就会被唤醒。
 *     一个典型应用场景就是启动一个服务时，主线程需要等待多个组件加载完毕，之后再继续执行。
 */
public class Main1 {

    private static CountDownLatch countDownLatch=new CountDownLatch(5);

    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 5; i++) {
            Thread thread=new Thread(new MyRunnable1(countDownLatch,i));
            thread.start();
        }
        countDownLatch.await();

        System.out.println("玩家准备完毕，开始游戏");
    }

}
